package cn.tedu.oopstatic;

/**
 * @Author 金帮嘉诚
 * @Date 2021-06-09 周三 16:10
 */
/*本类用于测试静态的入门案例*/
public class TestStatic1 {
    public static void main(String[] args) {
        /*3.静态资源可以通过类名直接调用，无需创建对象*/
        /*4.静态资源是优先于对象进行加载的，随着类的加载而加载
        * 比对象优先加载到内存，没对象时也可以通过类名直接调用
        * */
        //5.3
        System.out.println(Student.name);
        Student.speak();
        //Non-static field 'sno' cannot be referenced from a static context
        //System.out.println("Student.sno = " + Student.sno);

        //4.
        Student s=new Student();
        System.out.println(s.name);
        s.study();

        Student s2=new Student();
        //6.测试 给静态属性赋值
        s.name="xiaoqiao";
        System.out.println(s2.name);//打印出xiaoqiao
        //s2.name="名字";//改了以后生效，不影响之前的代码
        /*5.静态资源被全局所有对象共享，值只有一份*/
        System.out.println("s.name = " + s.name);//可以打印出xiaoqiao
        System.out.println(Student.name);//打印出xiaoqiao
        System.out.println("s2.name = " + s2.name);//打印出xiaoqiao
        
    }
}

//1.通过抽象封装形成一个学生类
class Student {
    //2.属性--成员变量--无需手动初始化
    /*1.可以通过static将普通资源修饰成静态资源*/
    /*2.static可以用来修饰成员变量和方法，一般写在修饰符的后边*/

    //5.1
    static String name;//姓名
    int sno;//学号

    //3.
    public void study() {
        System.out.println("我一点都不想过端午，我满脑子都是学Java");
    }

    //练习 用口语 回答问题
    //5.2
    public static void speak() {
        System.out.println("会要大声说出来");
    }


}